package day0224;

import java.io.Serializable;

public class Demo02 {

    public static void main(String[] args) {
        TypeC typeC = new TypeC();
        typeC.a();
    }
}

/**
 * 接口: 和类是一级的，是完全抽象的类型。不能实例化，也没有构造(不是类所以没有构造)
 *     接口是给类定义规范的或者说是定义标准的
 *  接口中的方法默认都是抽象的， 接口中的成员都是 public 的
 *  接口中的字段都是静态常量
 *  JDK 8 接口新增 静态方法, 使用 接口名.方法名 调用
 *                默认(default)方法
 *  JDK9 新增 private 方法
 *
 * 类通过 implements 实现接口，类可以实现多个接口
 *  接口可以多继承
 */
interface USB extends Serializable, Cloneable{

    public static final int A = 0;

    public abstract void a();

    public static void b(){
    }


    public default void c() {
        System.out.println("default");
        d();
    }

    private void d(){

    }
}


// 类实现接口
class TypeC implements USB, Serializable {

    @Override
    public void a() {
        System.out.println(A);
        c();
    }

    @Override
    public void c(){

    }

}

abstract class AbstractDemo {

    int a;

    public abstract void methodA();

    protected abstract void methodB();
}


class A extends AbstractDemo {

    @Override
    public void methodA() {

    }

    @Override
    protected void methodB() {

    }
}
